Pythonで属性名に _ 付け始めたらコードを見直す機会かもしれない
F: これって、あまり使わない方が良いという意味合いですか?
俺: んー、直接変更されたら困る属性ってそんなにあるの?っていう感じ
F: 直接変更されたら(メソッドの場合、直接呼ばれたら)困るコトはないと思いますが、外から呼び出す想定でないものは _ 付けとくとコード読む側は楽かなぁと思い、いつも付けちゃってました
俺: 外から呼び出す想定でない、ということはメソッドのことかな
F: あ、そうですね。
俺: そのメソッドは本当にそのクラス専用だろうか、モジュールグローバルな関数にできないだろうか、とコードを見直すとよいですね
俺: 外から呼んで欲しくないメソッドは、インスタンス変数を変更することが予想されるけど、それは呼び出すタイミングも重要だったりしないかな。クラス内ですら使い方に気を遣うメソッドだとしたら、なぜメソッドにしてあるんだろう、そのメソッドを使って良い呼び出し元は実は別の責務を持ってて、別のクラスに分けられるんじゃないか・・・みたいなことを自分は考えるかなーと思った
クラス内ですら使い方に気を遣うメソッドだとしたら、なぜメソッドにしてあるんだろう
F: 処理が長くなるとプライベート関数として分割しがちなんですが、確かにそもそも責務が異なってる可能性の方が高いですね。
F: naruhodo. 責務の洗い出し・理解が足りないというのが、そもそもの原因ですね・・・。